package com.groupbuying.redpacket.dao;

import com.groupbuying.redpacket.bo.RedPacketListBO;
import com.groupbuying.redpacket.domain.RedPacketListDO;
import com.groupbuying.redpacket.vo.RedPacketListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * 红包信息
 * @author vincnetxin
 * @email vincentxin@aliyun.com
 * @date 2019-11-12 14:55:04
 * @des
 */

@Mapper
@Repository
public interface RedPacketListDao {

	RedPacketListDO get(Long id);
	
	List<RedPacketListDO> list(Map<String, Object> map);
	
	int count(Map<String, Object> map);
	
	int save(RedPacketListDO redPacketList);
	
	int update(RedPacketListDO redPacketList);
	
	int remove(Long id);
	
	int batchRemove(Long[] ids);

	/**
	 * 根据taskId查询红包信息id[]
	 * @param taskId
	 * @return
	 */
	List<Long> listByTaskId(String taskId);

	/**
	 * 批量增加
	 * @param list
	 * @return
	 */
	int batchInsert (List<RedPacketListDO> list);

	/**
	 * 通过taskId和userId查询当前用户本轮中奖次数和中奖金额总和
	 * @param taskId
	 * @param userId
	 * @return winNumber:中奖次数  winAmount:中奖总金额
	 */
	Map<String, Object> winNumberWinAmount(String taskId, String userId);

	/**
	 * 通过taskId和phone查询当前用户本轮中奖次数和中奖金额总和
	 * @param taskId
	 * @param phone
	 * @return winNumber:中奖次数  winAmount:中奖总金额
	 */
	Map<String, Object> winNumberWinAmountByPhone(String taskId, String phone);

	/**
	 * 通过userId和platFrom查询当前用户本轮中奖次数和中奖金额总和
	 * @param platFrom
	 * @param userId
	 * @return winNumber:中奖次数  winAmount:中奖总金额
	 */
	Map<String, Object> winNumberWinAmountByUserIdPlatFrom(String platFrom, String userId);

	/**
	 * 大屏幕WEB端轮次活动结束排行榜，当前分类当前轮次排行榜
	 * @param taskId
	 * @return
	 */
    List<Map<String, Object>> currentRankingRotation(String taskId);

	/**
	 * 屏幕WEB端轮次活动结束排行榜，当前分类总排行榜
	 * @param platFrom
	 * @return
	 */
    List<Map<String, Object>> theTotalList(String platFrom);

	/**
	 * 屏幕WEB端轮次活动结束排行榜，当前分类当前轮次排行榜标题
	 * @param taskId
	 * @param platFrom
	 * @return
	 */
    Map<String, Object> themeActivities(String taskId, String platFrom);

	/**
	 * 微信小程序摇一摇抢红包中奖纪录，通过用户查询中奖纪录信息
	 * @param map
	 * @return
	 */
	List<RedPacketListVO> winningRecord(Map<String, Object> map);

	/**
	 * 微信小程序摇一摇抢红包中奖纪录，通过用户查询红包个数和红包总金额
	 * @param userId
	 * @return
	 */
	Map<String, Object> redPacketNumberMoney(String userId);

	/**
	 * 微信小程序摇一摇抢红包中奖纪录，总条数
	 * @param map
	 * @return
	 */
	int winningRecordCount (Map<String, Object> map);

	/**
	 * 大屏幕WEB端活动中，当前轮次排行榜
	 * @param taskId
	 * @return
	 */
	List<Map<String, Object>> activityCurrentRankingRotation(String taskId);

	/**
	 * 屏幕WEB端活动中，本轮中奖纪录
	 * @param map
	 * @return
	 */
	List<RedPacketListVO> allWinningRecords (Map<String, Object> map);

	/**
	 * 屏幕WEB端活动中，本轮中奖纪录总条数
	 * @param map
	 * @return
	 */
    int allWinningRecordsCount(Map<String, Object> map);

	/**
	 * 管理后台WEB端，中奖纪录
	 * @param map
	 * @return
	 */
	List<RedPacketListVO> theWinningRecord (Map<String, Object> map);

	/**
	 * 管理后台WEB端，中奖纪录总条数
	 * @param map
	 * @return
	 */
    int theWinningRecordCount(Map<String, Object> map);

	/**
	 * 管理后台WEB端中奖统计，列表
	 * @param map
	 * @return
	 */
	List<RedPacketListVO> theWinningStatistics (Map<String, Object> map);

	/**
	 * 管理后台WEB端中奖统计，总条数
	 * @param map
	 * @return
	 */
    int theWinningStatisticsCount(Map<String, Object> map);

	/**
	 * 管理后台WEB端中奖统计，平台分类红包金额和红包个数
	 * @return
	 */
	List<Map<String, Object>> categorizationNumberAmount(Map<String, Object> params);

    /**
     * @MethodName: getRedPacketBOByTaskId
     * @Description: TODO	用taskId获取红包业务数据
     * @param taskId
     * @Return: java.util.List<com.groupbuying.redpacket.bo.RedPacketListBO>
     * @Author: srlg3
     * @Date: 2019/11/22
     */

	List<RedPacketListBO> getRedPacketBOByTaskId(@Param("taskId") String taskId);
}
